import App from './App.vue'
import { createSSRApp } from 'vue'

// 辉耀大件
import { initStore, initLzayStore } from '@/common/store/index.js' // store
import { initRouter, initLzayRouter } from '@/common/router/index.js' // store
import { routerEach } from '@/common/tools/cmake_router.js' // router
import direct from '@common/directive/index.js' // 指令

// js
import { env, is_dev, is_cdn, set_target, set_env } from '@/common/config/cfg.js'

// 全局样式
import 'nprogress/nprogress.css'
import '@/styles/index.scss'

export function createApp(target) {
	set_target(target)
	set_env(env)

	const app = createSSRApp(App)
	const store = initStore()
	const router = initRouter()

	if (target === 'server') {
		Promise.allSettled([initLzayStore(store), initLzayRouter(router), routerEach(router, store)]).then(() => {
			app.use(store)
			app.use(router)
			app.use(direct)
		})
	}

	// 全局 property 不是this指向
	app.config.globalProperties.is_cdn = is_cdn
	// dev工具
	app.config.devtools = is_dev

	return { app, store, router }
}

// 处理错误
// app.config.errorHandler = (err, vm, info) => {
//   // `info` 是 Vue 特定的错误信息，比如错误所在的生命周期钩子
// }

//
// 全局注册组件
// app.component('component-a', {
// mounted() {
// 	console.log(this.foo) // 'bar'
// }
// })

// 全局注册组件指令
// app.directive('focus', {
// mounted() {
// 	el => el.focus()
// }
//   mounted: el => el.focus()
// })
